home *** CD-ROM | disk | FTP | other *** search
- unit aplibud;
-
- (*
- * aPLib compression library - the smaller the better :)
- *
- * VPascal interface to aplib.lib
- *
- * Copyright (c) 1998-2000 by Joergen Ibsen / Jibz
- * All Rights Reserved
- *
- * -> VPascal by Veit Kannegieser, 23.09.1998
- *)
-
- interface
-
- const
- aP_pack_continue=1;
- aP_pack_break =0;
-
- type
- (*$cdecl+*)
- apack_status=function(w1,w2:longint):longint;
- (*$cdecl-*)
- workmem_type=array[0..640*1024-1] of byte;
-
- (*$ORGNAME+*) (* aplibu@_aP_pack -> _aP_pack *)
-
- function _aP_pack(var quelle;
- var ziel;
- laenge:longint;
- var workmem:workmem_type;
- status:apack_status):longint;(*$IFDEF OS2*)cdecl;(*$ELSE*)stdcall;(*$ENDIF*)
-
- function _aP_workmem_size(laenge:longint):longint;(*$IFDEF OS2*)cdecl;(*$ELSE*)stdcall;(*$ENDIF*)
-
- function _aP_depack_asm(var quelle,ziel):longint;(*$IFDEF OS2*)cdecl;(*$ELSE*)stdcall;(*$ENDIF*)
-
- function _aP_depack_asm_fast(var quelle,ziel):longint;(*$IFDEF OS2*)cdecl;(*$ELSE*)stdcall;(*$ENDIF*)
-
- (*$ORGNAME-*)
-
- function cb0(w1,w2:longint):longint;cdecl;
- function cb1(w1,w2:longint):longint;cdecl;
-
-
- implementation
-
- (* if you want abort compression with Esc uncomment following line *)
- (*uses crt; *)
-
- function _aP_pack(var quelle;
- var ziel;
- laenge:longint;
- var workmem:workmem_type;
- status:apack_status):longint;external 'APLIB' index 1;
-
- function _aP_workmem_size(laenge:longint):longint; external 'APLIB' index 2;
-
- function _aP_depack_asm(var quelle,ziel):longint; external 'APLIB' index 3;
-
- function _aP_depack_asm_fast(var quelle,ziel):longint;external 'APLIB' index 4;
-
- (* callback samples for _aP_pack *)
-
- function cb0(w1,w2:longint):longint;assembler;(*$FRAME-*)(*$USES NONE*)
- asm
- mov eax,aP_pack_continue
- end;
-
- function cb1_(w1,w2:longint):longint;
- begin
- write(w1:8,w2:8,^m);
- cb1_:=aP_pack_continue;
- (* if you want abort compression with Esc uncomment following line *)
- (*if keypressed then
- if readkey=#27 then
- cb1_:=aP_pack_break; *)
- end;
-
- function cb1(w1,w2:longint):longint;assembler;(*$FRAME+*)(*USES NONE*)
- asm
- pushad
- push w1
- push w2
- call cb1_
- mov [ebp-4],eax (* POPAD restores EAX *)
- popad
- end;
-
- end.
-